/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica;

import Proxy.Usuarios.Usuario;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

/**
 *Clase que realiza las operaciones de xml para la entidad usuario
 * @author familia
 */
public class UsuarioXml {
    
    private Properties prop = new Properties();
    
    /**
     * Constructor de la clase que inicializa el archivo properties para
     * leer la ruta del xml que contiene la informacion de usuarios registrados localmente
     */
    public UsuarioXml(){
        InputStream is = null;

        try {
          is=new FileInputStream("Configuracion.properties");
          prop.load(is);
        } catch(IOException ioe) {}
    }
    /**
     * Metodo que valida las credenciales de un usuario
     * @param usuario credenciales a validar
     * @return true si las credenciales concuerda false si no
     */
    public boolean ValidarUsuario(Usuario usuario) {
        try {
            
            SAXBuilder builder = new SAXBuilder();
            FileInputStream is = new FileInputStream(prop.getProperty("rutaXmlUsuario"));
            Document result = builder.build(is);  
            Element raiz = result.getRootElement(); 
            List<Element> hijosRaiz = raiz.getChildren("usuario"); 
            for (Element elemento : hijosRaiz) {
                
                String nombre = elemento.getChild("login").getValue();
                String password = elemento.getChild("password").getValue();
                if((nombre.equalsIgnoreCase(usuario.getLogin()))&&
                        (password.equals(usuario.getPassword()))){
                    return true;
                }
                
            }
            is.close();
            return false;

        } catch (Exception e) {  
            System.out.println(e.getMessage());
            return false;
        }
    }
    
    /**
     * Metodo Agrega un usuario que se registre por primera vez en el sistema
     * @param usuario credenciales a validar
     * @return true si las credenciales concuerda false si no
     */
    public void GuardarUsuario(Usuario usuario) {
        try {
            boolean vacio = false;
            if(!ValidarUsuario(usuario)){
                SAXBuilder builder = new SAXBuilder();
                File archivo = new File(prop.getProperty("rutaXmlUsuario"));
                Document result;
                Element raiz;
                if(!archivo.exists()){
                    result = new Document(); 
                    archivo.createNewFile();
                    raiz = new Element("usuarios");
                    vacio = true;
                }else{
                    
                    result = builder.build(new FileInputStream(archivo));  
                    raiz = result.getRootElement();
                }
                Element nodo = new Element("usuario");
                nodo.addContent(new Element("login").setText(usuario.getLogin()));
                nodo.addContent(new Element("password").setText(usuario.getPassword()));

                raiz.addContent(nodo);
                if(vacio)
                    result.addContent(raiz);
                XMLOutputter xml_out=new XMLOutputter();
                FileOutputStream file_os=new FileOutputStream(prop.getProperty("rutaXmlUsuario"));
                xml_out.output(result,file_os);

                file_os.close();
            }
            
            
        } catch (Exception e) {
            System.out.println("");
        }
    }
}
